/* * The MIT License * * Copyright 2014 Hieu Le <letrunghieu.cse09@gmail.com>. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ package info.hieule.framework.laravel.wizards; import info.hieule.framework.laravel.github.LaravelGithubTags; import info.hieule.framework.laravel.versions.LaravelVersionComparator; import java.util.Arrays; import javax.swing.DefaultComboBoxModel; import javax.swing.JLabel; import javax.swing.event.ChangeListener; import org.openide.util.ChangeSupport; import org.openide.util.NbBundle; /** * * @author Hieu Le <letrunghieu.cse09@gmail.com> */ public class NewProjectConfigurationPanel extends javax.swing.JPanel { private String errorMessage; private final ChangeSupport changeSupport = new ChangeSupport(this); /** * Creates new form NewProjectConfigurationPanel */ public NewProjectConfigurationPanel() { initComponents(); _initUnzipGitHubTag(); } public void addChangeListener(ChangeListener changeListener) { changeSupport.addChangeListener(changeListener); } public void removeChangeListener(ChangeListener changeListener) { changeSupport.removeChangeListener(changeListener); } void fireChange() { changeSupport.fireChange(); } public String getErrorMessage() { return errorMessage; } /** * Detect that user use Laravel 4 * * @return */ public Boolean isLaravel4() { // TODO support Laravel 5 later return true; } public String getSelectedGithubTagUrl() { String selectedVersion = (String) cbbGithubVersions.getSelectedItem(); LaravelGithubTags githubTags = LaravelGithubTags.getInstance(); return githubTags.getZipUrl(selectedVersion); } public JLabel getProgressTextComp() { return lblProgress; } @NbBundle.Messages({ "NetworkError.CannotGetGithubTags=Network errors: cannot get tags from Github", "GettingTagsFromGithub=Getting tags from Github", "AllTagsFetched=All tags was fetched successfully, ready to create a new Laravel project" }) private void _initUnzipGitHubTag() { lblProgress.setText(Bundle.GettingTagsFromGithub()); LaravelGithubTags githubTags = LaravelGithubTags.getInstance(); String names[] = githubTags.getNames(); Arrays.sort(names, new LaravelVersionComparator()); cbbGithubVersions.setEnabled(true); cbbGithubVersions.setModel(new DefaultComboBoxModel<String>(names)); if (githubTags.isNetworkError()) { lblProgress.setText(Bundle.NetworkError_CannotGetGithubTags()); } else { lblProgress.setText(Bundle.AllTagsFetched()); } } /** * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { buttonGroup1 = new javax.swing.ButtonGroup(); cbbGithubVersions = new javax.swing.JComboBox(); jLabel1 = new javax.swing.JLabel(); lblProgress = new javax.swing.JLabel(); cbbGithubVersions.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); cbbGithubVersions.setEnabled(false); org.openide.awt.Mnemonics.setLocalizedText(jLabel1, org.openide.util.NbBundle.getMessage(NewProjectConfigurationPanel.class, "NewProjectConfigurationPanel.jLabel1.text")); // NOI18N org.openide.awt.Mnemonics.setLocalizedText(lblProgress, org.openide.util.NbBundle.getMessage(NewProjectConfigurationPanel.class, "NewProjectConfigurationPanel.lblProgress.text")); // NOI18N javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGap(2, 2, 2) .addComponent(jLabel1) .addGap(18, 18, 18) .addComponent(cbbGithubVersions, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(lblProgress)) .addGap(0, 101, Short.MAX_VALUE)) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(cbbGithubVersions, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel1)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 266, Short.MAX_VALUE) .addComponent(lblProgress)) ); }// </editor-fold>//GEN-END:initComponents // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.ButtonGroup buttonGroup1; private javax.swing.JComboBox cbbGithubVersions; private javax.swing.JLabel jLabel1; private javax.swing.JLabel lblProgress; // End of variables declaration//GEN-END:variables }